0337d3699a42b5a6af99e1d23e29062b2d90f9bb,opennms-services/src/main/java/org/opennms/netmgt/poller/monitors/MultiIcmpMonitor.java,MultiIcmpMonitor,poll,#MonitoredService#Map#,97

Before Change


        Category log = ThreadCategory.getInstance(this.getClass());
        PollStatus serviceStatus = PollStatus.unavailable();
		InetAddress host = (InetAddress) iface.getAddress();
		Map<String, Number> rtt = null;
		
		try {
			Pinger pinger = new Pinger();
			
			// get parameters
			//
			pinger.setRetries(ParameterMap.getKeyedInteger(parameters, "retry", pinger.getRetries()));
			pinger.setTimeout(ParameterMap.getKeyedLong(parameters, "timeout", pinger.getTimeout()));
			int count = ParameterMap.getKeyedInteger(parameters, "pings", DEFAULT_MULTI_PING_COUNT);
			
			rtt = pinger.parallelPing(host, count);
		} catch (IOException e) {
			log.debug("failed to ping " + host, e);
		}
        
        if (rtt != null) {
        	serviceStatus = PollStatus.available();
        	serviceStatus.setProperties(rtt);
        }
        
        return serviceStatus;

After Change


     *         should be suppressed.
     * 
     */
    public PollStatus poll(MonitoredService svc, Map parameters) {
        NetworkInterface iface = svc.getNetInterface();

        // Get interface address from NetworkInterface
        //
        if (iface.getType() != NetworkInterface.TYPE_IPV4)
            throw new NetworkInterfaceNotSupportedException("Unsupported interface type, only TYPE_IPV4 currently supported");

        Category log = ThreadCategory.getInstance(this.getClass());
        PollStatus serviceStatus = PollStatus.unavailable();
		InetAddress host = (InetAddress) iface.getAddress();
		List<Number> responseTimes = null;
		
		try {
			Pinger pinger = new Pinger();
			
			// get parameters
			//
			long timeout = ParameterMap.getKeyedLong(parameters, "timeout", Pinger.DEFAULT_TIMEOUT);
			int count = ParameterMap.getKeyedInteger(parameters, "pings", DEFAULT_MULTI_PING_COUNT);
			long pingInterval = ParameterMap.getKeyedLong(parameters, "interval", DEFAULT_PING_INTERVAL);
			
			responseTimes = new ArrayList<Number>(pinger.parallelPing(host, count, timeout, pingInterval));

			serviceStatus = PollStatus.available();
			Collections.sort(responseTimes, new Comparator<Number>() {

                public int compare(Number arg0, Number arg1) {
                    if (arg0 == null) {
                        return -1;
                    } else if (arg1 == null) {
                        return 1;
                    } else if (arg0.doubleValue() == arg1.doubleValue()) {
                        return 0;
                    } else {
                        return arg1.doubleValue() > arg0.doubleValue()? 1 : -1;
                    }
                }
			    
			});
			
			Map<String, Number> returnval = new LinkedHashMap<String,Number>();
			for (int i = 0; i < responseTimes.size(); i++) {
			    returnval.put("ping" + (i+1), responseTimes.get(i));
			}
			returnval.put("loss", CollectionMath.countNull(responseTimes));
			returnval.put("median", CollectionMath.median(responseTimes));
			returnval.put("response-time", CollectionMath.average(responseTimes));
			
			serviceStatus.setProperties(returnval);
		} catch (Exception e) {
			log.debug("failed to ping " + host, e);
		}